package com.atguigu.java8.stream;

import com.atguigu.java8.lambda.Employee;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

// Stream的三个操作步骤
// 	（1）创建Stream
// 	（2）中间操作
// 	（3）终止操作（终端操作）
public class TestStreamAPI1 {

    // （1）创建Stream
    @Test
    public void test1() {
        // （1）可以通过Collection系列集合提供的stream或parallelStream方法来创建
        List<String> list = new ArrayList<>();
        Stream<String> stream = list.stream();

        // （2）通过Arrays的静态方法stream获取数组流
        Employee[] employees = new Employee[10];
        Stream<Employee> stream1 = Arrays.stream(employees);

        // （3）通过Streams类中的静态方法of()获取流
        Stream<String> stream2 = Stream.of("aa", "bb", "cc");

        // （4）创建无限流
        // ① 通过Stream.iterate()方法创建
        Stream<Integer> stream3 = Stream.iterate(0, x -> x + 2);
        stream3.limit(10).forEach(System.out::println);

        // ② 通过Stream.generate()方法创建
        Stream<Double> stream4 = Stream.generate(() -> Math.random());
        stream4.limit(10).forEach(System.out::println);
    }

}
